package RRHH_Modelo;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import java.util.Date;

public class RHH_PLANILLA_FINIQUITO {

    private int ID;
    private int ID_USUARIO;
    private Date FECHA_CONTRATACION;
    private Date FECHA_RETIRO;
    private int MOTIVO;
    private int DEPARTAMENTO;
    private int REGIONAL;
    private int SUCURSAL;
    private double SALARIO;
    private double SALDO_MES_ANTERIOR;
    private double SALDO_MES_SIGUIENTE;
    private double TOTAL_MONTO_DESCONTAR_IMPUESTO;    
    private double DESAHUCIO;
    private double INDEMNIZACION;
    private double AGUINALDO;
    private double VACACIONES_NO_COBRADAS;
    private double OTROS_INGRESOS;
    private double DEDUCCIONES;
    private double COMPUTO_RCIVA_DDJJ;
    private double IMPUESTO_RC_IVA;
    private double MONTO_A_DESCONTAR;
    private double TOTAL_INDEMINIZACION;
    private double BONO_ANTIGUEDAD;    
    private int ID_CABECERA;    
    private Conexion con = null;

    public RHH_PLANILLA_FINIQUITO(Conexion con) {
        this.con = con;
    }

    public RHH_PLANILLA_FINIQUITO(int ID, int ID_USUARIO, Date FECHA_CONTRATACION, Date FECHA_RETIRO, int MOTIVO, int DEPARTAMENTO, int REGIONAL, int SUCURSAL, double SALARIO, double SALDO_MES_ANTERIOR, double TOTAL_MONTO_DESCONTAR_IMPUESTO, double DESAHUCIO, double INDEMNIZACION, double AGUINALDO, double VACACIONES_NO_COBRADAS, double OTROS_INGRESOS, double DEDUCCIONES, double COMPUTO_RCIVA_DDJJ, double IMPUESTO_RC_IVA, double MONTO_A_DESCONTAR, double TOTAL_INDEMINIZACION, int ID_CABECERA, double SALDO_MES_SIGUIENTE,double BONO_ANTIGUEDAD) {
        this.ID = ID;
        this.ID_USUARIO = ID_USUARIO;
        this.FECHA_CONTRATACION = FECHA_CONTRATACION;
        this.FECHA_RETIRO = FECHA_RETIRO;
        this.MOTIVO = MOTIVO;
        this.SALARIO = SALARIO;
        this.SALDO_MES_ANTERIOR = SALDO_MES_ANTERIOR;
        this.TOTAL_MONTO_DESCONTAR_IMPUESTO = TOTAL_MONTO_DESCONTAR_IMPUESTO;
        this.DESAHUCIO = DESAHUCIO;
        this.INDEMNIZACION = INDEMNIZACION;
        this.AGUINALDO = AGUINALDO;
        this.VACACIONES_NO_COBRADAS = VACACIONES_NO_COBRADAS;
        this.OTROS_INGRESOS = OTROS_INGRESOS;
        this.DEDUCCIONES = DEDUCCIONES;
        this.COMPUTO_RCIVA_DDJJ = COMPUTO_RCIVA_DDJJ;
        this.IMPUESTO_RC_IVA = IMPUESTO_RC_IVA;
        this.MONTO_A_DESCONTAR = MONTO_A_DESCONTAR;
        this.TOTAL_INDEMINIZACION = TOTAL_INDEMINIZACION;       
        this.ID_CABECERA = ID_CABECERA;
        this.SALDO_MES_SIGUIENTE=SALDO_MES_SIGUIENTE;
        this.BONO_ANTIGUEDAD=BONO_ANTIGUEDAD;
        this.DEPARTAMENTO=DEPARTAMENTO;
        this.REGIONAL=REGIONAL;
        this.SUCURSAL=SUCURSAL;
    }   

    public int Insertar() throws SQLException {
        String consulta = "insert into BROKER.RHH_PLANILLA_FINIQUITO (ID, ID_USUARIO, FECHA_CONTRATACION, FECHA_RETIRO, MOTIVO, DEPARTAMENTO, REGIONAL, SUCURSAL, SALARIO, DESAHUCIO, INDEMNIZACION, AGUINALDO, VACACIONES_NO_COBRADAS, OTROS_INGRESOS, DEDUCCIONES, COMPUTO_RCIVA_DDJJ, IMPUESTO_RC_IVA, MONTO_A_DESCONTAR, TOTAL_INDEMINIZACION, ID_CABECERA, SALDO_MES_ANTERIOR, TOTAL_MONTO_DESCONTAR_IMPUESTO, SALDO_MES_SIGUIENTE,BONO_ANTIGUEDAD) VALUES (" + ID + "," + ID_USUARIO + ","+getFECHA_CONTRATACION_INSERT()+","+getFECHA_RETIRO_INSERT()+"," + MOTIVO + ","+DEPARTAMENTO+", "+REGIONAL+","+ SUCURSAL+"," + SALARIO + "," + DESAHUCIO + "," + INDEMNIZACION + "," + AGUINALDO + "," + VACACIONES_NO_COBRADAS + "," + OTROS_INGRESOS + "," + DEDUCCIONES + "," + COMPUTO_RCIVA_DDJJ + "," + IMPUESTO_RC_IVA + "," + MONTO_A_DESCONTAR + "," + TOTAL_INDEMINIZACION + "," + ID_CABECERA + ", "+SALDO_MES_ANTERIOR+", "+TOTAL_MONTO_DESCONTAR_IMPUESTO+", "+SALDO_MES_SIGUIENTE+", "+BONO_ANTIGUEDAD+")";
        con.EjecutarSentencia(consulta);
        consulta = "select BROKER.RHH_PLANILLA_FINIQUITO_SEQ.currval as ID from dual";
        ResultSet rs = con.EjecutarConsulta(consulta);
        rs.next();
        return rs.getInt("ID");
    }

    public boolean Modificar() throws SQLException {
        String consulta = "update BROKER.RHH_PLANILLA_FINIQUITO set DEPARTAMENTO="+DEPARTAMENTO+", REGIONAL="+REGIONAL+", SUCURSAL="+SUCURSAL+",ID_USUARIO = " + ID_USUARIO + ",FECHA_CONTRATACION = "+getFECHA_CONTRATACION_INSERT()+",FECHA_RETIRO = "+getFECHA_RETIRO_INSERT()+",MOTIVO = " + MOTIVO + ",SALARIO = " + SALARIO + ",DESAHUCIO = " + DESAHUCIO + ",INDEMNIZACION = " + INDEMNIZACION + ",AGUINALDO = " + AGUINALDO + ",VACACIONES_NO_COBRADAS = " + VACACIONES_NO_COBRADAS + ",OTROS_INGRESOS = " + OTROS_INGRESOS + ",DEDUCCIONES = " + DEDUCCIONES + ",COMPUTO_RCIVA_DDJJ = " + COMPUTO_RCIVA_DDJJ + ",IMPUESTO_RC_IVA = " + IMPUESTO_RC_IVA + ",MONTO_A_DESCONTAR = " + MONTO_A_DESCONTAR + ",TOTAL_INDEMINIZACION = " + TOTAL_INDEMINIZACION + ",ID_CABECERA= " + ID_CABECERA + ", SALDO_MES_SIGUIENTE="+SALDO_MES_SIGUIENTE+", BONO_ANTIGUEDAD="+BONO_ANTIGUEDAD+" where ID =  " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }

    public boolean EliminarXid() throws SQLException {
        String consulta = "delete from BROKER.RHH_PLANILLA_FINIQUITO where ID= " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }
    public boolean Eliminar(int id_cabecera) throws SQLException {
        String consulta = "delete from BROKER.RHH_PLANILLA_FINIQUITO where ID_CABECERA= "+id_cabecera; 
        con.EjecutarSentencia(consulta);
        return true;
    }
    
    public List<RHH_PLANILLA_FINIQUITO> BuscarxCabecera(int id_cabecera) throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_FINIQUITO where ID_CABECERA= "+id_cabecera; 
        ResultSet rs =con.EjecutarConsulta(consulta);
        return Cargar(rs);        
    }

    public RHH_PLANILLA_FINIQUITO Buscar(int id) throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_FINIQUITO where ID = " + getID();
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_FINIQUITO> lista = Cargar(rs);
        if (lista.size() > 0) {
            return lista.get(0);
        } else {
            return null;
        }
    }
    
    public RHH_PLANILLA_FINIQUITO BuscarXid_Usuario(int id_usuario) throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_FINIQUITO where ID_USUARIO = " + id_usuario;
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_FINIQUITO> lista = Cargar(rs);
        if (lista.size() > 0) {
            return lista.get(0);
        } else {
            return null;
        }
    }

    public List<RHH_PLANILLA_FINIQUITO> Todos() throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_FINIQUITO";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_FINIQUITO> lista = Cargar(rs);
        return lista;
    }
    public List<RHH_PLANILLA_FINIQUITO> TodosPendientes() throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_FINIQUITO where ESTADO = 0";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_FINIQUITO> lista = Cargar(rs);
        return lista;
    }

    public List<RHH_PLANILLA_FINIQUITO> Cargar(ResultSet rs) throws SQLException {
        List<RHH_PLANILLA_FINIQUITO> lista = new ArrayList<RHH_PLANILLA_FINIQUITO>();
        while (rs.next()) {
            RHH_PLANILLA_FINIQUITO objeto = new RHH_PLANILLA_FINIQUITO(con);
            objeto.setID(rs.getInt("ID"));
            objeto.setID_USUARIO(rs.getInt("ID_USUARIO"));
            objeto.setFECHA_CONTRATACION(rs.getDate("FECHA_CONTRATACION"));
            objeto.setFECHA_RETIRO(rs.getDate("FECHA_RETIRO"));
            objeto.setMOTIVO(rs.getInt("MOTIVO"));
            objeto.setSALARIO(rs.getDouble("SALARIO"));
            objeto.setDESAHUCIO(rs.getDouble("DESAHUCIO"));
            objeto.setINDEMNIZACION(rs.getDouble("INDEMNIZACION"));
            objeto.setAGUINALDO(rs.getDouble("AGUINALDO"));
            objeto.setVACACIONES_NO_COBRADAS(rs.getDouble("VACACIONES_NO_COBRADAS"));
            objeto.setOTROS_INGRESOS(rs.getDouble("OTROS_INGRESOS"));
            objeto.setDEDUCCIONES(rs.getDouble("DEDUCCIONES"));
            objeto.setCOMPUTO_RCIVA_DDJJ(rs.getDouble("COMPUTO_RCIVA_DDJJ"));
            objeto.setIMPUESTO_RC_IVA(rs.getDouble("IMPUESTO_RC_IVA"));
            objeto.setMONTO_A_DESCONTAR(rs.getDouble("MONTO_A_DESCONTAR"));
            objeto.setTOTAL_INDEMINIZACION(rs.getDouble("TOTAL_INDEMINIZACION"));            
            objeto.setID_CABECERA(rs.getInt("ID_CABECERA"));
            objeto.setSALDO_MES_SIGUIENTE(rs.getDouble("SALDO_MES_SIGUIENTE"));
            objeto.setBONO_ANTIGUEDAD(rs.getDouble("BONO_ANTIGUEDAD"));
            objeto.setSALDO_MES_ANTERIOR(rs.getDouble("SALDO_MES_ANTERIOR"));
            objeto.setTOTAL_MONTO_DESCONTAR_IMPUESTO(rs.getDouble("TOTAL_MONTO_DESCONTAR_IMPUESTO"));
            objeto.setDEPARTAMENTO(rs.getInt("DEPARTAMENTO"));
            objeto.setREGIONAL(rs.getInt("REGIONAL"));
            objeto.setSUCURSAL(rs.getInt("SUCURSAL"));
            lista.add(objeto);
        }
        return lista;
    }

    public int getDEPARTAMENTO() {
        return DEPARTAMENTO;
    }

    public void setDEPARTAMENTO(int DEPARTAMENTO) {
        this.DEPARTAMENTO = DEPARTAMENTO;
    }

    public int getREGIONAL() {
        return REGIONAL;
    }

    public void setREGIONAL(int REGIONAL) {
        this.REGIONAL = REGIONAL;
    }

    public int getSUCURSAL() {
        return SUCURSAL;
    }

    public void setSUCURSAL(int SUCURSAL) {
        this.SUCURSAL = SUCURSAL;
    }   
    
    public double getBONO_ANTIGUEDAD() {
        return BONO_ANTIGUEDAD;
    }

    public void setBONO_ANTIGUEDAD(double BONO_ANTIGUEDAD) {
        this.BONO_ANTIGUEDAD = BONO_ANTIGUEDAD;
    }   
    
    public double getSALDO_MES_SIGUIENTE() {
        return SALDO_MES_SIGUIENTE;
    }

    public void setSALDO_MES_SIGUIENTE(double SALDO_MES_SIGUIENTE) {
        this.SALDO_MES_SIGUIENTE = SALDO_MES_SIGUIENTE;
    }   
    
    public double getSALDO_MES_ANTERIOR() {
        return SALDO_MES_ANTERIOR;
    }

    public void setSALDO_MES_ANTERIOR(double SALDO_MES_ANTERIOR) {
        this.SALDO_MES_ANTERIOR = SALDO_MES_ANTERIOR;
    }

    public double getTOTAL_MONTO_DESCONTAR_IMPUESTO() {
        return TOTAL_MONTO_DESCONTAR_IMPUESTO;
    }

    public void setTOTAL_MONTO_DESCONTAR_IMPUESTO(double TOTAL_MONTO_DESCONTAR_IMPUESTO) {
        this.TOTAL_MONTO_DESCONTAR_IMPUESTO = TOTAL_MONTO_DESCONTAR_IMPUESTO;
    }   
    
    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public int getID_USUARIO() {
        return ID_USUARIO;
    }

    public void setID_USUARIO(int ID_USUARIO) {
        this.ID_USUARIO = ID_USUARIO;
    }

    public Date getFECHA_CONTRATACION() {
        return FECHA_CONTRATACION;
    }
    
    public String getFECHA_CONTRATACION_FORMAT() {
        SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
        if(FECHA_CONTRATACION!=null)return formato.format(FECHA_CONTRATACION);
        else return "";
    }
    public String getFECHA_CONTRATACION_INSERT() {
        SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
        if(FECHA_CONTRATACION!=null)return "to_date('"+formato.format(FECHA_CONTRATACION)+"','dd/MM/yyyy')";
        else return "null";
    }

    public void setFECHA_CONTRATACION(Date FECHA_CONTRATACION) {
        this.FECHA_CONTRATACION = FECHA_CONTRATACION;
    }

    public Date getFECHA_RETIRO() {
        return FECHA_RETIRO;
    }
    public String getFECHA_RETIRO_FORMAT() {
        SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
        if(FECHA_RETIRO!=null)return formato.format(FECHA_RETIRO);
        else return "";
    }    
    public String getFECHA_RETIRO_INSERT() {
        SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
        if(FECHA_RETIRO!=null)return "to_date('"+formato.format(FECHA_RETIRO)+"','dd/MM/yyyy')";
        else return "null";
    }    

    public void setFECHA_RETIRO(Date FECHA_RETIRO) {
        this.FECHA_RETIRO = FECHA_RETIRO;
    }

    public int getMOTIVO() {
        return MOTIVO;
    }

    public void setMOTIVO(int MOTIVO) {
        this.MOTIVO = MOTIVO;
    }

    public double getSALARIO() {
        return SALARIO;
    }

    public void setSALARIO(double SALARIO) {
        this.SALARIO = SALARIO;
    }

    public double getDESAHUCIO() {
        return DESAHUCIO;
    }

    public void setDESAHUCIO(double DESAHUCIO) {
        this.DESAHUCIO = DESAHUCIO;
    }

    public double getINDEMNIZACION() {
        return INDEMNIZACION;
    }

    public void setINDEMNIZACION(double INDEMNIZACION) {
        this.INDEMNIZACION = INDEMNIZACION;
    }

    public double getAGUINALDO() {
        return AGUINALDO;
    }

    public void setAGUINALDO(double AGUINALDO) {
        this.AGUINALDO = AGUINALDO;
    }

    public double getVACACIONES_NO_COBRADAS() {
        return VACACIONES_NO_COBRADAS;
    }

    public void setVACACIONES_NO_COBRADAS(double VACACIONES_NO_COBRADAS) {
        this.VACACIONES_NO_COBRADAS = VACACIONES_NO_COBRADAS;
    }

    public double getOTROS_INGRESOS() {
        return OTROS_INGRESOS;
    }

    public void setOTROS_INGRESOS(double OTROS_INGRESOS) {
        this.OTROS_INGRESOS = OTROS_INGRESOS;
    }

    public double getDEDUCCIONES() {
        return DEDUCCIONES;
    }

    public void setDEDUCCIONES(double DEDUCCIONES) {
        this.DEDUCCIONES = DEDUCCIONES;
    }

    public double getCOMPUTO_RCIVA_DDJJ() {
        return COMPUTO_RCIVA_DDJJ;
    }

    public void setCOMPUTO_RCIVA_DDJJ(double COMPUTO_RCIVA_DDJJ) {
        this.COMPUTO_RCIVA_DDJJ = COMPUTO_RCIVA_DDJJ;
    }

    public double getIMPUESTO_RC_IVA() {
        return IMPUESTO_RC_IVA;
    }

    public void setIMPUESTO_RC_IVA(double IMPUESTO_RC_IVA) {
        this.IMPUESTO_RC_IVA = IMPUESTO_RC_IVA;
    }

    public double getMONTO_A_DESCONTAR() {
        return MONTO_A_DESCONTAR;
    }

    public void setMONTO_A_DESCONTAR(double MONTO_A_DESCONTAR) {
        this.MONTO_A_DESCONTAR = MONTO_A_DESCONTAR;
    }

    public double getTOTAL_INDEMINIZACION() {
        return TOTAL_INDEMINIZACION;
    }

    public void setTOTAL_INDEMINIZACION(double TOTAL_INDEMINIZACION) {
        this.TOTAL_INDEMINIZACION = TOTAL_INDEMINIZACION;
    }

    public int getID_CABECERA() {
        return ID_CABECERA;
    }

    public void setID_CABECERA(int ID_CABECERA) {
        this.ID_CABECERA = ID_CABECERA;
    }   
    
    public Conexion getCon() {
        return con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }
  
}
